package main

import (
	"fmt"
	"math"
)

/*
n条鱼在池塘中，每条鱼的战斗力F>0
现在要进行m轮大鱼吃小鱼，每一轮中，池塘中最小的鱼会被第二小的鱼吃掉
大鱼吃小鱼后，大鱼的F（新大鱼）=F（原大鱼） + F（原小鱼）
问：经过m轮后，池塘中最小的鱼F值

输入：n m F0...Fn-1
*/

func main() {
	var n int
	var m int
	fmt.Scan(&n, &m)
	var f []int
	for i := 0; i < n; i++ {
		var min int
		fmt.Scan(&min)
		f = append(f, min)
	}

	isDie := make([]bool, n, n)

	for i := 0; i < m; i++ {
		max := 0
		for index, j := range f {
			if f[max] < j {
				max = index
			}
		}
		min1 := max
		min2 := max
		for j := 0; j < n; j++ {
			if isDie[j] {
				continue
			}
			fi := f[j]
			if f[min1] > fi {
				min2 = min1
				min1 = j
			} else if f[min2] > fi && fi != f[min1] {
				min2 = j
			}
		}
		isDie[min1] = true
		f[min2] += f[min1]
	}

	result := math.MaxInt64
	for i := 0; i < n; i++ {
		if isDie[i] {
			continue
		}
		if result > f[i] {
			result = f[i]
		}
	}
	fmt.Println(result)
}
